package com.atgg.condition;

import com.atgg.beans.RainBow;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * 实现自己的注册类的，完成注册bean
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     *
     * @param importingClassMetadata:当前类的注解信息
     *  BeanDefinitionRegistry:BeanDefinition注册类，将所有需要的类使用
     *                              BeanDefinitionRegistry.registerBeanDefinition方法手动注册
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        boolean red = registry.containsBeanDefinition("com.atgg.beans.Red");
        boolean blue = registry.containsBeanDefinition("com.atgg.beans.Blue");
        if (red&&blue){
            // 指定bean的名称
            BeanDefinition beanDefinition = new RootBeanDefinition(RainBow.class);
            registry.registerBeanDefinition("----rainBow---",beanDefinition);
        }
    }
}
